# 在开始之前，请确保你安装了 matplotlib 库
# pip install matplotlib（使用命令行工具运行这段代码安装matplotlib）

# 导入 matplotlib 库
import matplotlib.pyplot as plt

# 在绘制带有中文标题或标签的图表时，可能会遇到显示乱码的问题。这是由于 matplotlib 默认使用的字体不支持中文。我们可以通过设置字体来解决这个问题。
# 导入中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体

# 解决负号 '-' 显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 可以通过 figsize 参数来控制保存的图片大小，figsize 以英寸为单位。
# 创建图表，并设置图像大小为 8x6 英寸
plt.figure(figsize=(8, 6))

# 创建折线图，设置图例、线条颜色、线型和线条宽度
plt.plot(x, y, label='xxx数据', color='red', marker='o', linestyle='--', linewidth=2)

# 显示图例
plt.legend()

# 为 (2, 4) 点添加注释
plt.annotate('这个点很重要', xy=(2, 4), xytext=(3, 10), arrowprops=dict(facecolor='black', shrink=0.05))

# plt.annotate()：为图表中的特定点添加注释。
# xy：指定要标注的点的坐标。
# xytext：指定注释文本的位置。
# arrowprops：设置箭头的样式。
# shrink=0.05 表示箭头长度缩短 5%，这样箭头看起来不会完全覆盖注释的起点和终点，而是稍微缩短。
# shrink 的值可以是 0 到 1 之间的小数，值越大箭头缩短得越多。

# 示例：为图表添加标题和坐标轴标签
# 添加标题
plt.title("简单的折线图")

# 添加坐标轴标签
plt.xlabel("X轴")
plt.ylabel("Y轴")

# 我们可以手动设置坐标轴的范围和刻度，使图表的显示更加清晰。
# 设置坐标轴的范围
plt.xlim(0, 6)  # X 轴的范围
plt.ylim(0, 30)  # Y 轴的范围

# 设置 X 轴和 Y 轴的刻度
plt.xticks([1, 2, 3, 4, 5])
plt.yticks([0, 5, 10, 15, 20, 25])

# matplotlib 可以将生成的图表保存为多种格式的图片文件，比如 PNG、JPG、SVG 等。我们可以通过 savefig() 函数来完成这个操作。
# 有时候我们需要保存高分辨率的图片，比如用于打印或发布。可以通过 dpi 参数设置分辨率。
# 矢量图 (SVG, PDF) 在放大和缩小时不会失真，适合用于需要缩放的场景。
# 保存图表为 PNG 文件
plt.savefig('output/my_plot.png', dpi=300)

# 显示图表
plt.show()

# 图表的基本组成元素
# 每个 matplotlib 图表主要由以下几个元素组成：
#
# 图形 (Figure)：整个绘图区域。
# 坐标轴 (Axes)：图表中的数据区域，它可以包含多条曲线或数据点。
# 曲线 (Line)：用来展示数据的线段。
# 刻度 (Ticks)：坐标轴上显示的数据标记。
# 标签 (Label)：用于标识坐标轴含义的文字。
